﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraBars;
using QLKhachSan.DTO;
using System.Data.SqlClient;
using QLKhachSan.DAO;
using QLKhachSan.BUS;
using DevExpress.XtraEditors;


namespace QLKhachSan.GUI
{
    public partial class fNhanVien : DevExpress.XtraBars.Ribbon.RibbonForm
    {
        public fNhanVien()
        {
            InitializeComponent();
        }

        private Boolean checkThemNV;
        private void fNhanVien_Load(object sender, EventArgs e)
        {
            // Chi Tiet Nhan Vien
            textBoxMaNV.Enabled = false;
            textBoxMaNV.ResetText();
            textBoxTenNV.Enabled = false;
            textBoxTenNV.ResetText();
            textBoxSDT.Enabled = false;
            textBoxSDT.ResetText();
            textBoxCMND.Enabled = false;
            textBoxCMND.ResetText();
            textBoxDiaChi.Enabled = false;
            textBoxDiaChi.ResetText();
            simpleButtonHuy.Enabled = false;
            simpleButtonLuu.Enabled = false;
            simpleButtonSua.Enabled = true;
            simpleButtonThem.Enabled = true;
            simpleButtonXoa.Enabled = true;
            radioButtonNam.Checked = true;
            radioButtonNam.Enabled = false;
            radioButtonNu.Enabled = false;
            dateTimePickerNgaySinh.Enabled = false;
            dateTimePickerNgayVaoLam.Enabled = false;
            dataGridViewNV.DataSource = BUS_NhanVien.hienthiDanhSachNhanVien();
            
                for (int i = 0; i < dataGridViewNV.Rows.Count - 1; i++)
                {
                    dataGridViewNV.Rows[i].Cells[0].Value = i + 1;
                }
                        checkThemNV = false;

            // Tim Kiem Nhan Vien
            textBoxTimKiem.Font = new System.Drawing.Font("Times New Roman", 9.75F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            textBoxTimKiem.ForeColor = System.Drawing.SystemColors.WindowFrame;            
            textBoxTimKiem.Text = "Nhập Từ Khóa Tìm Kiếm...";
            textBoxTimKiem.Enabled = false;            
            
            dateTimePickerNgayTu.Enabled = false;
            dateTimePickerNgayDen.Enabled = false;
            radioButtonGioiTinh.Enabled = false;            
            radioButtonTenNV.Enabled = false;
          
            radioButtonNgayVaoLam.Enabled = false;
            comboBoxGioiTinh.SelectedIndex = 0;
            comboBoxGioiTinh.Enabled = false;
            simpleButtonOK.Enabled = false;
            simpleButtonHuyTK.Enabled = false;
            simpleButtonTK.Enabled = true;
            radioButtonTenNV.Checked = true;            
                 
        }

        private void textBoxCMND_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) && (e.KeyChar != '.'))
                e.Handled = true;
        }

        private void textBoxSDT_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) && (e.KeyChar != '.'))
                e.Handled = true;
        }

        private void textBoxTuoiTu_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) && (e.KeyChar != '.'))
                e.Handled = true;
        }

        private void textBoxTuoiDen_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) && (e.KeyChar != '.'))
                e.Handled = true;
        }

        private void simpleButtonThem_Click(object sender, EventArgs e)
        {
            textBoxMaNV.Enabled = false;
            textBoxMaNV.ResetText();
            textBoxTenNV.Enabled = true;
            textBoxTenNV.ResetText();
            textBoxTenNV.Focus();
            textBoxSDT.Enabled = true;
            textBoxSDT.ResetText();
            textBoxCMND.Enabled = true;
            textBoxCMND.ResetText();
            textBoxDiaChi.Enabled = true;
            textBoxDiaChi.ResetText();
            simpleButtonHuy.Enabled = true;
            simpleButtonLuu.Enabled = true;
            simpleButtonSua.Enabled = false;
            simpleButtonThem.Enabled = false;
            simpleButtonXoa.Enabled = false;
            radioButtonNam.Checked = true;
            radioButtonNam.Enabled = true;
            radioButtonNu.Enabled = true;
            dateTimePickerNgaySinh.Enabled = true;
            dateTimePickerNgayVaoLam.Enabled = true;
            checkThemNV = true;
            if (dataGridViewNV.Rows.Count > 1)
            {
                for (int i = 0; i < dataGridViewNV.Rows.Count - 1; i++)
                {
                    dataGridViewNV.Rows[i].Cells[0].Value = i + 1;
                }
            }
        }

        private void simpleButtonSua_Click(object sender, EventArgs e)
        {
           if(  textBoxMaNV.Text != "")
            {              
            textBoxTenNV.Enabled = true;            
            textBoxTenNV.Focus();
            textBoxSDT.Enabled = true;            
            textBoxCMND.Enabled = true;            
            textBoxDiaChi.Enabled = true;            
            simpleButtonHuy.Enabled = true;
            simpleButtonLuu.Enabled = true;
            simpleButtonSua.Enabled = false;
            simpleButtonThem.Enabled = false;
            simpleButtonXoa.Enabled = false;
            radioButtonNam.Checked = true;
            radioButtonNam.Enabled = true;
            radioButtonNu.Enabled = true;
            dateTimePickerNgaySinh.Enabled = true;
            dateTimePickerNgayVaoLam.Enabled = true;
            textBoxCMND.Enabled = false;
            checkThemNV = false;
           }else{
               MessageBox.Show("Bạn Cần chọn Nhân Viên cần sửa!!!???", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error);
           }
        }

        private void simpleButtonHuy_Click(object sender, EventArgs e)
        {
            textBoxMaNV.Enabled = false;
            textBoxMaNV.ResetText();
            textBoxTenNV.Enabled = false;
            textBoxTenNV.ResetText();
            textBoxSDT.Enabled = false;
            textBoxSDT.ResetText();
            textBoxCMND.Enabled = false;
            textBoxCMND.ResetText();
            textBoxDiaChi.Enabled = false;
            textBoxDiaChi.ResetText();
            simpleButtonHuy.Enabled = false;
            simpleButtonLuu.Enabled = false;
            simpleButtonSua.Enabled = true;
            simpleButtonThem.Enabled = true;
            simpleButtonXoa.Enabled = true;
            radioButtonNam.Checked = true;
            radioButtonNam.Enabled = false;
            radioButtonNu.Enabled = false;
            dateTimePickerNgaySinh.Enabled = false;
            dateTimePickerNgayVaoLam.Enabled = false;
            dataGridViewNV.DataSource = BUS_NhanVien.hienthiDanhSachNhanVien();
            if (dataGridViewNV.Rows.Count > 1)
            {
                for (int i = 0; i < dataGridViewNV.Rows.Count - 1; i++)
                {
                    dataGridViewNV.Rows[i].Cells[0].Value = i + 1;
                }
            }
            checkThemNV = false;
        }

        private void simpleButtonLuu_Click(object sender, EventArgs e)
        {
            if (textBoxTenNV.Text.Trim() != "" && textBoxCMND.Text.Trim() != "" && textBoxDiaChi.Text.Trim() != "" && textBoxSDT.Text.Trim() != "")
            {
                TimeSpan songay = DateTime.Now.Subtract(dateTimePickerNgaySinh.Value);
                int tuoi = (int)songay.TotalDays / 365;
                
                if (tuoi >= 18) {
                    textBoxCMND.Text.ToString().Trim();
                   if(textBoxCMND.TextLength == 9 && textBoxSDT.TextLength >=10 && textBoxSDT.TextLength <=11){                     
                      
                       DataTable dt_nv = BUS_NhanVien.hienthiDanhSachNhanVien();
                        int dem = 0;
                        for (int i = 0; i < dt_nv.Rows.Count; i++)
                        {
                            if (textBoxCMND.Text.Trim() == dt_nv.Rows[i]["CMND"].ToString().Trim())
                            {
                                dem++;
                                break;
                            }                      
                        }                       
                              DTO_NhanVien nv = new DTO_NhanVien();
                                nv.TenNV = textBoxTenNV.Text;
                                if (radioButtonNam.Checked == true)
                                {
                                    nv.GioiTinh = "Nam";
                                }
                                else {
                                    nv.GioiTinh = "Nữ";
                                }
                               nv.NgaySinh = dateTimePickerNgaySinh.Value;
                               nv.CMND = textBoxCMND.Text.Trim();
                               nv.SDT = textBoxSDT.Text.Trim();
                               nv.NgayVaoLam = dateTimePickerNgayVaoLam.Value;
                               nv.DiaChi = textBoxDiaChi.Text.Trim();

                           if(checkThemNV){
                               if (dem == 0)
                               {
                               BUS_NhanVien.themNhanVien(nv);
                              
                               // Them tai Khoan
                               DataTable dta_nv = BUS_NhanVien.hienthiDanhSachNhanVien();
                               DTO_TaiKhoan dto_tk = new DTO_TaiKhoan();
                               dto_tk.TenTK = dta_nv.Rows[dta_nv.Rows.Count -1 ]["MaNV"].ToString();
                               dto_tk.Quyen = "user";
                               dto_tk.MatKhau = dta_nv.Rows[dta_nv.Rows.Count - 1]["MaNV"].ToString();
                               BUS_TaiKhoan.themTaiKhoan(dto_tk);
                               MessageBox.Show("Thêm Nhân viên thành công  (Tạo Khoản Mới Vừa Được tạo ra ID:"+ dta_nv.Rows[dta_nv.Rows.Count -1 ]["MaNV"].ToString() + " Và Pass :" + dta_nv.Rows[dta_nv.Rows.Count -1 ]["MaNV"].ToString() + " )", "Thông Báo !", MessageBoxButtons.OK, MessageBoxIcon.Information);
                               }
                               else
                               {
                                   MessageBox.Show("Số CMND đã có trong cơ sở dử liệu!!!???", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                               }
                           }else if (!checkThemNV){
                               nv.MaNV = int.Parse(textBoxMaNV.Text);
                               BUS_NhanVien.suaNhanVien(nv);
                               MessageBox.Show("Sửa Nhân viên thành công ", "Thông Báo !", MessageBoxButtons.OK, MessageBoxIcon.Information);
                           }
                           simpleButtonHuy_Click(sender, e);
                      

                    }
                    else{
                          MessageBox.Show("Số CMND hoặc Số điện thoại chưa hợp lệ !!!??? (Số CMND 9 số , Số ĐTDĐ từ 10 đến 11 số)", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                   }

                } else {
                    MessageBox.Show("Tuổi nhân viên nhỏ hơn 18 tuổi !!!???", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else 
            {
                MessageBox.Show("Bạn cần điền đầy đủ thông tin!!!???", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            if (dataGridViewNV.Rows.Count > 1)
            {
                for (int i = 0; i < dataGridViewNV.Rows.Count - 1; i++)
                {
                    dataGridViewNV.Rows[i].Cells[0].Value = i + 1;
                }
            }
        }

        private void simpleButtonXoa_Click(object sender, EventArgs e)
        {
            if (textBoxMaNV.Text.Trim() != "")
            {
                if (MessageBox.Show("Bạn có Chắc chắn muốn xóa???", "Note !", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    try
                    {
                        DTO_NhanVien nv = new DTO_NhanVien();
                        nv.MaNV = int.Parse(textBoxMaNV.Text);
                        BUS_NhanVien.xoaNhanVien(nv);
                        // xoa tai khoan
                        DataTable dta_tk = BUS_TaiKhoan.hienthiDanhSachTaiKhoan();
                        for (int i = 0; i < dta_tk.Rows.Count; i++ )
                        {
                            if (int.Parse(dta_tk.Rows[i]["TenTK"].ToString()) == int.Parse(textBoxMaNV.Text))
                            {
                                DTO_TaiKhoan dto_tk = new DTO_TaiKhoan();
                                dto_tk.MaTK = int.Parse(dta_tk.Rows[i]["MaTK"].ToString());
                                BUS_TaiKhoan.xoaTaiKhoan(dto_tk);
                                break;
                            }
                        }
                        simpleButtonHuy_Click(sender, e);
                    }
                    catch (Exception )
                    {
                        MessageBox.Show("Không thể xóa được vì mã Nhân viên đã tồn tại ở bảng Khác!!!???", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }

                }
            }
            else
            {
                MessageBox.Show("Bạn cần chọn Nhân viên cần xóa!!!???", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void dataGridViewNV_MouseClick(object sender, MouseEventArgs e)
        {
            try
            {
                if (!checkThemNV)
                {
                    int r = dataGridViewNV.CurrentCell.RowIndex;
                    textBoxTenNV.Text = dataGridViewNV.Rows[r].Cells["TenNV"].Value.ToString();
                    textBoxMaNV.Text = dataGridViewNV.Rows[r].Cells["MaNV"].Value.ToString();
                    textBoxDiaChi.Text = dataGridViewNV.Rows[r].Cells["DiaChi"].Value.ToString();
                    textBoxCMND.Text = dataGridViewNV.Rows[r].Cells["CMND"].Value.ToString();
                    textBoxSDT.Text = dataGridViewNV.Rows[r].Cells["SDT"].Value.ToString();
                    dateTimePickerNgaySinh.Text = dataGridViewNV.Rows[r].Cells["NgaySinh"].Value.ToString();
                    dateTimePickerNgayVaoLam.Text = dataGridViewNV.Rows[r].Cells["NgayVaoLam"].Value.ToString();
                    if (dataGridViewNV.Rows[r].Cells["GioiTinh"].Value.ToString().Trim() == "Nam")
                    {
                        radioButtonNam.Checked = true;
                    }
                    else {
                        radioButtonNu.Checked = true;
                    }
                }

            }
            catch (Exception)
            {
            }
        }

        private void simpleButtonTK_Click(object sender, EventArgs e)
        {
            textBoxTimKiem.Font = new System.Drawing.Font("Times New Roman", 9.75F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            textBoxTimKiem.ForeColor = System.Drawing.SystemColors.WindowFrame;
            textBoxTimKiem.Text = "Nhập Từ Khóa Tìm Kiếm...";
            textBoxTimKiem.Enabled = false;
            dateTimePickerNgayDen.MinDate = dateTimePickerNgayTu.Value;
            dateTimePickerNgayTu.Enabled = false;
            dateTimePickerNgayDen.Enabled = false;
            radioButtonGioiTinh.Enabled = true;
            radioButtonTenNV.Checked = true;
            radioButtonTenNV.Enabled = true;
         
            radioButtonNgayVaoLam.Enabled = true;
            comboBoxGioiTinh.SelectedIndex = 0;
            comboBoxGioiTinh.Enabled = false;
            simpleButtonOK.Enabled = true;
            simpleButtonHuyTK.Enabled = true;
            simpleButtonTK.Enabled = false;           
            if ( radioButtonTenNV.Checked == true) {
                textBoxTimKiem.Enabled = true;
            }else if( radioButtonTenNV.Checked != true){
                textBoxTimKiem.Enabled = false;
            }
        }

        private void simpleButtonHuyTK_Click(object sender, EventArgs e)
        {
            textBoxTimKiem.Font = new System.Drawing.Font("Times New Roman", 9.75F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            textBoxTimKiem.ForeColor = System.Drawing.SystemColors.WindowFrame;
            textBoxTimKiem.Text = "Nhập Từ Khóa Tìm Kiếm...";
            textBoxTimKiem.Enabled = false;           
           
            dateTimePickerNgayTu.Enabled = false;
            dateTimePickerNgayDen.Enabled = false;
            radioButtonGioiTinh.Enabled = false;            
            radioButtonTenNV.Enabled = false;
           
            radioButtonNgayVaoLam.Enabled = false;
            comboBoxGioiTinh.SelectedIndex = 0;
            comboBoxGioiTinh.Enabled = false;
            simpleButtonOK.Enabled = false;
            simpleButtonHuyTK.Enabled = false;
            simpleButtonTK.Enabled = true;
            radioButtonTenNV.Checked = true;
            dataGridViewNV.DataSource = BUS_NhanVien.hienthiDanhSachNhanVien();
            for (int i = 0; i < dataGridViewNV.Rows.Count - 1; i++)
            {
                dataGridViewNV.Rows[i].Cells[0].Value = i + 1;
            }
        }

        private void radioButtonMaNV_MouseClick(object sender, MouseEventArgs e)
        {
            textBoxTimKiem.Enabled = true;          
        }

        private void textBoxTimKiem_MouseClick(object sender, MouseEventArgs e)
        {
            if (textBoxTimKiem.Text.Trim() == "Nhập Từ Khóa Tìm Kiếm...")
            {
                textBoxTimKiem.Font = new System.Drawing.Font("Times New Roman", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                textBoxTimKiem.ForeColor = System.Drawing.SystemColors.WindowText;
                textBoxTimKiem.ResetText();
            }
        }

        private void radioButtonTenNV_MouseClick(object sender, MouseEventArgs e)
        {
            textBoxTimKiem.Enabled = true;
        }

        private void radioButtonGioiTinh_MouseClick(object sender, MouseEventArgs e)
        {
            textBoxTimKiem.Font = new System.Drawing.Font("Times New Roman", 9.75F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            textBoxTimKiem.ForeColor = System.Drawing.SystemColors.WindowFrame;
            textBoxTimKiem.Text = "Nhập Từ Khóa Tìm Kiếm...";
            textBoxTimKiem.Enabled = false;
            comboBoxGioiTinh.Enabled = true;
         
            dateTimePickerNgayTu.Enabled = false;
            dateTimePickerNgayDen.Enabled = false;
            radioButtonGioiTinh.Enabled = true;            
            radioButtonTenNV.Enabled = true;
            
            radioButtonNgayVaoLam.Enabled = true;
            comboBoxGioiTinh.SelectedIndex = 0;
            
        }

        private void radioButtonTuoi_MouseClick(object sender, MouseEventArgs e)
        {
            textBoxTimKiem.Font = new System.Drawing.Font("Times New Roman", 9.75F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            textBoxTimKiem.ForeColor = System.Drawing.SystemColors.WindowFrame;
            textBoxTimKiem.Text = "Nhập Từ Khóa Tìm Kiếm...";
            textBoxTimKiem.Enabled = false;
            comboBoxGioiTinh.Enabled = false;
                     
            dateTimePickerNgayTu.Enabled = false;
            dateTimePickerNgayDen.Enabled = false;
            radioButtonGioiTinh.Enabled = true;           
            radioButtonTenNV.Enabled = true;
          
            radioButtonNgayVaoLam.Enabled = true;
            comboBoxGioiTinh.SelectedIndex = 0;
        }

        private void radioButtonNgayVaoLam_MouseClick(object sender, MouseEventArgs e)
        {
            textBoxTimKiem.Font = new System.Drawing.Font("Times New Roman", 9.75F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            textBoxTimKiem.ForeColor = System.Drawing.SystemColors.WindowFrame;
            textBoxTimKiem.Text = "Nhập Từ Khóa Tìm Kiếm...";
            textBoxTimKiem.Enabled = false;
            comboBoxGioiTinh.Enabled = false;
           
            dateTimePickerNgayTu.Enabled = true;
            dateTimePickerNgayDen.Enabled = true;
            radioButtonGioiTinh.Enabled = true;            
            radioButtonTenNV.Enabled = true;
            
            radioButtonNgayVaoLam.Enabled = true;
            comboBoxGioiTinh.SelectedIndex = 0;
        }

        private void simpleButtonOK_Click(object sender, EventArgs e)
        {            
            
            if(radioButtonTenNV.Checked == true){
                if (textBoxTimKiem.Text.Trim() != "")
                {
                    dataGridViewNV.DataSource = clsKetNoi.TimKiem("pr_HienThiNhanVien", "TenNV", textBoxTimKiem.Text.ToString().Trim());
                }
                else
                {
                    MessageBox.Show("Bạn Chưa Nhập Thông Tin Tìm Kiếm!!!???", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }            
            
            if(radioButtonNgayVaoLam.Checked == true){
                dataGridViewNV.DataSource = BUS_NhanVien.timNhanVienTheoNgayVaoLam(DateTime.Parse(dateTimePickerNgayTu.Text), DateTime.Parse(dateTimePickerNgayDen.Text));
            } 
            if(radioButtonGioiTinh.Checked == true) {
                dataGridViewNV.DataSource = clsKetNoi.TimKiem("pr_HienThiNhanVien", "GioiTinh", comboBoxGioiTinh.Text.ToString());
            }
            for (int i = 0; i < dataGridViewNV.Rows.Count - 1; i++)
            {
                dataGridViewNV.Rows[i].Cells[0].Value = i + 1;
            }
        }

        private void groupControl1_Paint(object sender, PaintEventArgs e)
        {

        }

        private void dateTimePickerNgayTu_ValueChanged(object sender, EventArgs e)
        {
            dateTimePickerNgayDen.MinDate = dateTimePickerNgayTu.Value;
        }

        
        

        private void textBoxCMND_Leave(object sender, EventArgs e)
        {
           if(textBoxCMND.Text.Trim() != "")
           {
                if (textBoxCMND.TextLength != 9)
                {
                    MessageBox.Show("Số CMND chưa hợp lệ  (Số đã nhập : " + textBoxCMND.TextLength.ToString() + " số)!!!??? (Số CMND 9 số)", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
           }
        }

        private void textBoxSDT_Leave(object sender, EventArgs e)
        {
            if (textBoxSDT.Text.Trim() !="")
           {
                if(! ( textBoxSDT.TextLength >= 10 && textBoxSDT.TextLength <= 11) )
            {
                MessageBox.Show("Số SĐT di dộng chưa hợp lệ (Số đã nhập : " + textBoxSDT.TextLength.ToString() + " số) !!!??? (Số SĐT di động 10-11 số)", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
           }

        }

        private void simpleButtonThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

      

        

       



     
    }
}